package org.microboot.data.factory;

import javax.sql.DataSource;
import java.util.List;
import java.util.Map;

/**
 * @author 胡鹏
 */
public interface DataSourceFactory {

    /**
     * 是否开启XA
     *
     * @return
     */
    boolean getEnableXA();

    /**
     * 获取Freemarker的宏文件名
     *
     * @return
     */
    String getMacro();

    /**
     * 获取主库信息
     *
     * @return
     */
    Map<String, Object> getMaster();

    /**
     * 获取从库信息
     *
     * @return
     */
    Map<String, Object> getSlaves();

    /**
     * 获取其他库信息
     *
     * @return
     */
    List<Map<String, Object>> getOthers();

    /**
     * 创建DruidDataSource或DruidXADataSource
     *
     * @param parameters
     * @return
     */
    DataSource createDataSource(Map<String, Object> parameters);

    /**
     * 获取数据源名称
     *
     * @param dataSource
     * @return
     */
    String getDataSourceName(DataSource dataSource);
}
